package lombok.demo;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * {@code @Accessors}：单独使用没有意义，必须配合@Getter @Setter使用。参数默认都是false。作用是可以定制化getter、setter的访问器。<p>
 * <p>
 * 属性解析: <p>
 * fluent: 访问器是否以字段命名，默认为false。如果为 true，访问器将以字段命名，并且不包含get或set前缀。如果为true 且不显式设置chain，chain默认为true 。
 * 注意：此设置对@With没有影响；他们总是得到一个"with"前缀。
 * TIPS: 一般为了能够提供内省，此属性均设置为 false。如果没有此需求，则此属性可以大幅缩减代码长度。
 * chain: 是否使用链式，默认为false。如果为 true，setter 将返回this而不是void。如果 fluent=true 默认为true。
 * makeFinal: 是否使得生成的 getter和setter 访问器将被标记为final，默认为false。
 *
 * @author yexi
 */
@Accessors(fluent = true, chain = true, makeFinal = true)
@Getter
@Setter
public class AccessorsDemo extends SuperClass{
    private int age;

    private char sex;

    private int height;

    private float money;

    private boolean high;

    public static class Son extends AccessorsDemo {
/*
        因为访问器被修饰成了final，所以子类无法覆盖，编译时即报错
        @Override
        public char sex() {
            return super.sex();
        }
*/
    }
}
